/* Linus H, 3B, pjav1409 */
package pjav1409.oop.k2_8;

/**
 * Tidpunkt är en klass som håller koll på ett klockslag. Man kan sedan begära ut
 * timmar, minuter, sekunder eller allt på en gång. Metoden ticka() ökar tiden
 * med 1 sekund
 * @author Linus
 */
public class Tidpunkt {
    private int t, m, s;
    private boolean visaSek = true;

    /**
     * Komstruktor där man sätter klockslaget
     * @param tim Timme (0-24)
     * @param min Minut (0-59)
     * @param sek Sekund (0-59)
     */
    public void sätt(int tim, int min, int sek){
        //Kontrollera att värderna är riktiga
        if (tim >= 0 && tim < 24 && min >= 0 && min < 60 && sek >= 0 && sek < 60){
            this.t = tim;
            this.m = min;
            this.s = sek;
        }
        else {
            //Är de inte det, printa felmeddelande
            System.out.println("Felaktig tippunkt");
        }
    }

    /**
     * Metod som bestämmer om sekunder ska retuneras i toString()
     * @param visa sätts till true om man vill att ska toString ska returnera
     * antal sekunder
     */
    public void sättVisaSek(boolean visa){
        this.visaSek = visa;
    }

    /**
     * Returnerar antalet timmar
     * @return antalet timmar
     */
    public int avläsTim(){
        return this.t;
    }

    /**
     * Returnerar antalet minuter
     * @return antalet minuter
     */
    public int avläsMin(){
        return this.m;
    }

    /**
     * Returnerar antalet sekunder
     * @return antalet sekunder
     */
    public int avläsSek(){
        return this.s;
    }

    /**
     * Returnerar hela klockslaget med formatet tt:mm:ss
     * @return returnerar klockslaget med formatet tt:mm:ss
     */
    public String toString(){
        String tid = t + ":" + m;

        //Inkludera sekunder om visaSek = true
        if (this.visaSek){
            tid  += ":" + s;
        }

        return tid;
    }

    /**
     * Metod som ökar antalet sekunder med 1
     */
    public void ticka(){
        //Öka antalet sekunder
        this.s += 1;

        //Om antalet s nått 60, sätt till 0 och ökar m med 1
        if (this.s == 60){
            this.s = 0;
            this.m += 1;
        }

        //Om antalet m nått 60, sätt till 0 och öka t med 1
        if (this.m == 60){
            this.m = 0;
            this.t += 1;
        }

        //Om antalet t nått 24, starta om klockan
        if (this.t == 24){
            this.t = 0;
        }
    }

}
